/**
 * Hoja de trabajo 1 - Radio
 * 
 * El programa simula el funcionamiento del un radio a través de la 
 * implementación de una interfaz IRadio la cual fue desarrollada
 * en clase. 
 * 
 * El estado del raido es encendido / apagado y puede ser usado para
 * sintonizar AM o FM. Se tienen 12 botones para guardar las emisoras
 * sintonizadas las cuales permiten seleccionar. Las frecuencias AM
 * se representan por múltiplos de 10 en el rango 530 a 1610. Las
 * frecuencias FM se encuentran en el rango de 87.9 a 107.9 en múltiplos
 * de 0.2
 * 
 * Autor: Esteban Ortiz
 * Fecha: 2010-07-19
 */
package gui;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;

import javax.swing.JFrame;

/**
 * Clase principal de la interfaz GUI
 * @author setian
 * 
 */
public class InterfazRadio extends JFrame{
	
	// -----------------------------------------------------------------
    // Constantes
    // -----------------------------------------------------------------
	
	/**
	 * Constante predeterminada para la serialización
	 */
	private static final long serialVersionUID = 1L;

	// -----------------------------------------------------------------
    // Atributos de la interfaz
    // -----------------------------------------------------------------
	
	/**
	 * Es el panel donde se muestran los botones de comando.
	 */
	private PanelBotones botones;
	
	/**
	 * Panel donde se muestra el display con las emisoras selecionadas.
	 */
	private PanelDisplay display;
	
	/**
	 * Panel con los 12 botones de presets para almacenar las emisoras.
	 */
	private PanelPresets presets; 
	
	// -----------------------------------------------------------------
    // Constructores
    // -----------------------------------------------------------------
	
	/**
	 * Construye e inicializa la interfaz principal de la aplicación
	 */
	public InterfazRadio() {
		// Crea el frame
		setLayout(new BorderLayout());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		getContentPane().setBackground(Color.WHITE);
		setTitle("Radio");
		setSize(650, 200);
		
		// Creación de los paneles
		botones = new PanelBotones();
		display = new PanelDisplay();
		presets = new PanelPresets();
		
		// Agrega los paneles al frame
		add(botones, BorderLayout.EAST);
		add(display, BorderLayout.NORTH);
		add(presets, BorderLayout.CENTER);
		centrarVentana();
	}
	
	// -----------------------------------------------------------------
    // Métodos
    // -----------------------------------------------------------------
	
	/**
	 * Centra la ventana en la pantalla
	 */
	private void centrarVentana() {
		// Obtiene las dimensiones de la pantalla y determina el punto medio
		Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize();
		int x = (pantalla.width - getWidth()) / 2;
		int y = (pantalla.height - getHeight()) / 2;
		setLocation(x, y);
	}
}
